package com.study.netty.demo1;

import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang3.StringUtils;

public class SimpleClientHandler extends ChannelInboundHandlerAdapter {

    /**
     * 本方法用于接收服务端发送过来的消息
     *
     * @param ctx
     * @param msg
     * @throws Exception
     */
    @Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) {
        System.out.println("Server:" + msg);

        String message = msg.toString();
        if (StringUtils.isNotBlank(message) && message.contains("@@@@")) {
            String str = message.split("@@@@")[0];
            if (StringUtils.isNotBlank(str)) {
                String[] strs = str.split("#");
                if (ArrayUtils.isNotEmpty(strs) && strs.length > 5) {
                    //返回编号
                    String response_code = strs[0];
                    //查询账号
                    String acctNo = strs[1];
                    //返回明细记录数
                    String rec = strs[2];

                    System.out.println(response_code);
                    System.out.println(acctNo);
                    System.out.println(rec);
                    for (int i = 3; i < 3 + Integer.valueOf(rec); i++) {
                        System.out.println(strs[i]);
                    }
                }
            }
        }
    }

    /**
     * 本方法用于处理异常
     *
     * @param ctx
     * @param cause
     * @throws Exception
     */
    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
        // 当出现异常就关闭连接
        cause.printStackTrace();
        ctx.close();
    }

    /**
     * 本方法用于向服务端发送信息
     *
     * @param ctx
     * @throws Exception
     */
    @Override
    public void channelActive(ChannelHandlerContext ctx) {
        System.out.println("连接成功");

        //流水查询
        //String msg = "xhj5006#10250001002202219#0#@@@@";
        //账户查询
        String msg = "xhj0004#10250004444444441002202219#@@@@";
        //单笔交易
        //String msg = "xhj8016#1231234466#20291220##10250001002202219##1#0#4#10250001001724600#银企直联转账收款账户#######@@@@";
        ctx.writeAndFlush(msg);
    }
}
